<SerializableListOfControlAdapterSettings>
  <SubTypes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
  <ArrayOfControlAdapterSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <ControlAdapterSettings>
      <Name>ReCaptcha replaces DNNCaptcha</Name>
      <Decription><![CDATA[This is a dynamic adapter, which intercepts the native DNN captcha control, and replaces it with the harder to  crack Recaptcha from Google (see https://www.google.com/recaptcha/intro/index.html for more details)

TODO:

* Register a key for your site (see https://www.google.com/recaptcha/admin#list)

* Enter your public key in the "DNNCaptcha Handler Render"  corresponding parameter and your private key in the "DNNCaptcha Handler Validate" corresponding parameter.

* Enable the adapter, save, any form with the native DNN Captcha should now display a Recaptcha instead. Note that the adapter works by solving, hiding the original DNN captcha and invalidating it upon failed Recaptcha validation.]]></Decription>
      <Enabled>true</Enabled>
      <AdaptedMode>Type</AdaptedMode>
      <AdatedPathMode>SelectPath</AdatedPathMode>
      <AdaptedSelectedPath />
      <AdaptedControlPath />
      <AdaptedControlType>
        <TypeName>DotNetNuke.UI.WebControls.CaptchaControl, DotNetNuke</TypeName>
      </AdaptedControlType>
      <AdapterMode>DynamicAdapter</AdapterMode>
      <AdapterControlType>
        <TypeName />
      </AdapterControlType>
      <DynamicHandlers>
        <SubTypes>
          <string>Aricie.DNN.Modules.PortalKeeper.DynamicHandlerSettings`1[[DotNetNuke.Web.UI.WebControls.DnnCaptcha, DotNetNuke.Web]], Aricie.PortalKeeper</string>
          <string>Aricie.DNN.Modules.PortalKeeper.DynamicHandlerSettings`1[[DotNetNuke.UI.WebControls.CaptchaControl, DotNetNuke]], Aricie.PortalKeeper</string>
        </SubTypes>
        <ArrayOfDynamicHandlerSettings>
          <DynamicHandlerSettings xsi:type="DynamicHandlerSettingsOfDnnCaptcha">
            <Name>DNNCaptcha Handler Render</Name>
            <Decription><![CDATA[This dynamic handler extends the native DNNCaptcha Html rendering to:

* Hide the native DNN Captcha being replaced and fill the original Textbox with the correct value to have it solved by default.

* Insert the corresponding Recaptcha script, given the registered public key as configured in the handler parameters.]]></Decription>
            <Enabled>true</Enabled>
            <Mode>Actions</Mode>
            <Variables>
              <Instances>
                <SubTypes>
                  <string>Aricie.DNN.Services.Flee.GeneralVariableInfo, Aricie.DNN</string>
                </SubTypes>
                <ArrayOfVariableInfo>
                  <VariableInfo xsi:type="GeneralVariableInfo">
                    <Name>RecaptchaPublicKey</Name>
                    <Decription><![CDATA[This is the public key provided to you upon registration of your website at https://www.google.com/recaptcha/admin#list.

Copy the key to the "Value" Textbox below.]]></Decription>
                    <EvaluationMode>Dynamic</EvaluationMode>
                    <Scope>Local</Scope>
                    <DotNetType>
                      <TypeName>System.String, mscorlib</TypeName>
                    </DotNetType>
                    <VariableMode>Instance</VariableMode>
                    <InstanceMode>Off</InstanceMode>
                    <UseClone>false</UseClone>
                    <SerializableInstance>
                      <Value Type="System.String, mscorlib"><string>6LfByvUSAAAAABv0uIYFZ4KiFnLKOoh8cPR70Qh7</string></Value>
                    </SerializableInstance>
                    <AdvancedExpression>false</AdvancedExpression>
                    <FleeExpression>
                      <Expression />
                      <Variables>
                        <Instances>
                          <SubTypes />
                          <ArrayOfVariableInfo />
                        </Instances>
                        <ShowAvailableTypes>false</ShowAvailableTypes>
                        <AddDelegates>false</AddDelegates>
                        <ExpressionTypes />
                      </Variables>
                      <OverrideOwner>false</OverrideOwner>
                      <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                      <StaticImports />
                      <ImportBuiltinTypes>true</ImportBuiltinTypes>
                      <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                      <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                      <DecimalSeparator>46</DecimalSeparator>
                      <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                      <ParseCultureMode>Invariant</ParseCultureMode>
                      <CustomCultureLocale>en-US</CustomCultureLocale>
                      <RealLiteralDataType>Decimal</RealLiteralDataType>
                    </FleeExpression>
                    <AsCompiledExpression>false</AsCompiledExpression>
                    <MethodName />
                    <MethodIndex>1</MethodIndex>
                    <TargetInstance>
                      <Expression />
                    </TargetInstance>
                    <Parameters>
                      <Instances>
                        <SubTypes />
                        <ArrayOfVariableInfo />
                      </Instances>
                      <ShowAvailableTypes>false</ShowAvailableTypes>
                      <AddDelegates>false</AddDelegates>
                      <ExpressionTypes />
                    </Parameters>
                  </VariableInfo>
                </ArrayOfVariableInfo>
              </Instances>
              <ShowAvailableTypes>false</ShowAvailableTypes>
              <AddDelegates>false</AddDelegates>
              <ExpressionTypes>
                <DotNetType>
                  <TypeName>System.String, mscorlib</TypeName>
                </DotNetType>
                <DotNetType>
                  <TypeName>System.Boolean, mscorlib</TypeName>
                </DotNetType>
              </ExpressionTypes>
            </Variables>
            <Actions>
              <Instances>
                <SubTypes>
                  <string>Aricie.DNN.Modules.PortalKeeper.GeneralObjectActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</string>
                </SubTypes>
                <ArrayOfActionProviderSettingsOfSimpleEngineEvent>
                  <ActionProviderSettingsOfSimpleEngineEvent xsi:type="GeneralObjectActionProviderOfSimpleEngineEvent">
                    <Name>Add Recaptcha Html</Name>
                    <Decription><![CDATA[The Render method provides a "writer" parameter with type HtmlTextWriter to inject the corresponding Html into the page.

This is a simple Object action that calls the writer.Write(String s) method, passing the html content to be inserted as a string for Captcha replacement.]]></Decription>
                    <Enabled>true</Enabled>
                    <ProviderName>Object Action</ProviderName>
                    <LifeCycleEvent>Run</LifeCycleEvent>
                    <StopOnFailure>false</StopOnFailure>
                    <ExitAction>false</ExitAction>
                    <RethrowException>false</RethrowException>
                    <DontLogExceptions>false</DontLogExceptions>
                    <CaptureException>false</CaptureException>
                    <ExceptionVarName>ActionException</ExceptionVarName>
                    <AddSleepTime>false</AddSleepTime>
                    <SleepTime d="00:00:00" />
                    <UseSemaphore>false</UseSemaphore>
                    <SemaphoreName>Aricie-ActionSemaphore</SemaphoreName>
                    <NbConcurrentThreads>1</NbConcurrentThreads>
                    <SynchronisationTimeout d="00:00:00" />
                    <ConditionalAction>false</ConditionalAction>
                    <CaptureRunDuration>false</CaptureRunDuration>
                    <RunDurationVarName />
                    <DisablePerformanceLogger>false</DisablePerformanceLogger>
                    <UseTaskQueue>false</UseTaskQueue>
                    <EnableCache>false</EnableCache>
                    <CacheKeyFormat>{0}</CacheKeyFormat>
                    <ProcessTokens>false</ProcessTokens>
                    <UseSingleton>false</UseSingleton>
                    <CacheDuration d="00:00:10" />
                    <OutputName />
                    <AddItems>false</AddItems>
                    <Simulation>false</Simulation>
                    <SimulationData><![CDATA[]]></SimulationData>
                    <ObjectAction>
                      <Enabled>true</Enabled>
                      <LockTarget>true</LockTarget>
                      <DotNetType>
                        <TypeName>System.Web.UI.HtmlTextWriter, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</TypeName>
                      </DotNetType>
                      <Instance>
                        <Expression>writer</Expression>
                        <Variables>
                          <Instances>
                            <SubTypes />
                            <ArrayOfVariableInfo />
                          </Instances>
                          <ShowAvailableTypes>false</ShowAvailableTypes>
                          <AddDelegates>false</AddDelegates>
                          <ExpressionTypes>
                            <DotNetType>
                              <TypeName>System.String, mscorlib</TypeName>
                            </DotNetType>
                            <DotNetType>
                              <TypeName>System.Boolean, mscorlib</TypeName>
                            </DotNetType>
                          </ExpressionTypes>
                        </Variables>
                        <OverrideOwner>false</OverrideOwner>
                        <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                        <StaticImports />
                        <ImportBuiltinTypes>true</ImportBuiltinTypes>
                        <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                        <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                        <DecimalSeparator>46</DecimalSeparator>
                        <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                        <ParseCultureMode>Invariant</ParseCultureMode>
                        <CustomCultureLocale>en-US</CustomCultureLocale>
                        <RealLiteralDataType>Decimal</RealLiteralDataType>
                      </Instance>
                      <ActionMode>CallMethod</ActionMode>
                      <MemberName>Write</MemberName>
                      <MemberIndex>1</MemberIndex>
                      <PropertyValue>
                        <Expression />
                        <Variables>
                          <Instances>
                            <SubTypes />
                            <ArrayOfVariableInfo />
                          </Instances>
                          <ShowAvailableTypes>false</ShowAvailableTypes>
                          <AddDelegates>false</AddDelegates>
                          <ExpressionTypes />
                        </Variables>
                        <OverrideOwner>false</OverrideOwner>
                        <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                        <StaticImports />
                        <ImportBuiltinTypes>true</ImportBuiltinTypes>
                        <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                        <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                        <DecimalSeparator>46</DecimalSeparator>
                        <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                        <ParseCultureMode>Invariant</ParseCultureMode>
                        <CustomCultureLocale>en-US</CustomCultureLocale>
                        <RealLiteralDataType>Decimal</RealLiteralDataType>
                      </PropertyValue>
                      <Parameters>
                        <Instances>
                          <SubTypes>
                            <string>Aricie.DNN.Services.Flee.GeneralVariableInfo, Aricie.DNN</string>
                          </SubTypes>
                          <ArrayOfVariableInfo>
                            <VariableInfo xsi:type="GeneralVariableInfo">
                              <Name>s</Name>
                              <Decription><![CDATA[This is the html string being passed to the HtmlTextWriter.Write method in order to replace the original Captcha. 

It is built from formatting a templated string with dynamic parameters for the Recaptcha public key and the original DNN Captcha solution.]]></Decription>
                              <EvaluationMode>Dynamic</EvaluationMode>
                              <Scope>Local</Scope>
                              <DotNetType>
                                <TypeName>System.String, mscorlib</TypeName>
                              </DotNetType>
                              <VariableMode>Expression</VariableMode>
                              <InstanceMode>Off</InstanceMode>
                              <UseClone>false</UseClone>
                              <AdvancedExpression>true</AdvancedExpression>
                              <FleeExpression>
                                <Expression>Format(RecaptchaCScriptStr,RecaptchaPublicKey,DNNCaptchaResponse)</Expression>
                                <Variables>
                                  <Instances>
                                    <SubTypes>
                                      <string>Aricie.DNN.Services.Flee.GeneralVariableInfo, Aricie.DNN</string>
                                      <string>Aricie.DNN.Services.Flee.ExpressionVariableInfo`1[[System.String, mscorlib]], Aricie.DNN</string>
                                    </SubTypes>
                                    <ArrayOfVariableInfo>
                                      <VariableInfo xsi:type="GeneralVariableInfo">
                                        <Name>RecaptchaCScriptStr</Name>
                                        <Decription><![CDATA[This is the templated script responsible for creating the Recaptcha html and hiding the original dnn captcha. 
Placeholders are included for dynamic insertion of recaptcha public key and dnn captcha solution value.

It contains:

* the Recaptcha Javascript block as detailed in the official documentation on the following page:
https://developers.google.com/recaptcha/docs/display. 

* A jQuery command to solve and hide the original captcha being replaced.]]></Decription>
                                        <EvaluationMode>Dynamic</EvaluationMode>
                                        <Scope>Local</Scope>
                                        <DotNetType>
                                          <TypeName>Aricie.ComponentModel.CData, Aricie.Core</TypeName>
                                        </DotNetType>
                                        <VariableMode>Instance</VariableMode>
                                        <InstanceMode>Off</InstanceMode>
                                        <UseClone>false</UseClone>
                                        <SerializableInstance>
                                          <Value Type="Aricie.ComponentModel.CData, Aricie.Core"><CData><![CDATA[<div id="recaptcha"></div>
<script type='text/javascript' src='http://www.google.com/recaptcha/api/challenge?k={0}'></script>
<script type='text/javascript'>if (typeof Sys != 'undefined') {{
	var requestManager = Sys.WebForms.PageRequestManager.getInstance();
	requestManager.add_endRequest(function(sender, args) {{ if (typeof
			Recaptcha != 'undefined') {{
			Recaptcha.create('{0}',
						"recaptcha", {{ theme: "red", callback:
							Recaptcha.focus_response_field }}); }}
			}});
			jQuery('#recaptcha').prev().children().hide();
			jQuery('#recaptcha').prev().find('span').show();
			jQuery('#recaptcha').prev().find("input").val('{1}');}}
</script>
<noscript>
	<iframe src='http://www.google.com/recaptcha/api/noscript?k={0}' height='300' width='500' frameborder='0'></iframe>
	<br/>
	<textarea name='recaptcha_challenge_field' rows='3' cols='40'>
	</textarea>      
	<input type='hidden' name='recaptcha_response_field'          value='manual_challenge'>   
</noscript>]]></CData></Value>
                                        </SerializableInstance>
                                        <AdvancedExpression>false</AdvancedExpression>
                                        <FleeExpression>
                                          <Expression />
                                          <Variables>
                                            <Instances>
                                              <SubTypes />
                                              <ArrayOfVariableInfo />
                                            </Instances>
                                            <ShowAvailableTypes>false</ShowAvailableTypes>
                                            <AddDelegates>false</AddDelegates>
                                            <ExpressionTypes />
                                          </Variables>
                                          <OverrideOwner>false</OverrideOwner>
                                          <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                                          <StaticImports />
                                          <ImportBuiltinTypes>true</ImportBuiltinTypes>
                                          <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                                          <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                                          <DecimalSeparator>46</DecimalSeparator>
                                          <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                                          <ParseCultureMode>Invariant</ParseCultureMode>
                                          <CustomCultureLocale>en-US</CustomCultureLocale>
                                          <RealLiteralDataType>Decimal</RealLiteralDataType>
                                        </FleeExpression>
                                        <AsCompiledExpression>false</AsCompiledExpression>
                                        <MethodName />
                                        <MethodIndex>1</MethodIndex>
                                        <TargetInstance>
                                          <Expression />
                                        </TargetInstance>
                                        <Parameters>
                                          <Instances>
                                            <SubTypes />
                                            <ArrayOfVariableInfo />
                                          </Instances>
                                          <ShowAvailableTypes>false</ShowAvailableTypes>
                                          <AddDelegates>false</AddDelegates>
                                          <ExpressionTypes />
                                        </Parameters>
                                      </VariableInfo>
                                      <VariableInfo xsi:type="ExpressionVariableInfoOfString">
                                        <Name>DNNCaptchaResponse</Name>
                                        <Decription><![CDATA[This is a variable that collects the original DNN Captcha solution from the corresponding private member with a Flee expression.

In order to access the private member, it makes use of a dedicated Expression Owner set to the native Captcha control, with the appropriate member access. 

See https://flee.codeplex.com/wikipage?title=ExpressionOwner&referringTitle=Examples for more information.]]></Decription>
                                        <EvaluationMode>Dynamic</EvaluationMode>
                                        <Scope>Local</Scope>
                                        <InstanceMode>Off</InstanceMode>
                                        <UseClone>false</UseClone>
                                        <AdvancedExpression>true</AdvancedExpression>
                                        <FleeExpression>
                                          <Expression>_CaptchaText.ToString()</Expression>
                                          <Variables>
                                            <Instances>
                                              <SubTypes />
                                              <ArrayOfVariableInfo />
                                            </Instances>
                                            <ShowAvailableTypes>false</ShowAvailableTypes>
                                            <AddDelegates>false</AddDelegates>
                                            <ExpressionTypes>
                                              <DotNetType>
                                                <TypeName>System.String, mscorlib</TypeName>
                                              </DotNetType>
                                              <DotNetType>
                                                <TypeName>System.Boolean, mscorlib</TypeName>
                                              </DotNetType>
                                            </ExpressionTypes>
                                          </Variables>
                                          <OverrideOwner>true</OverrideOwner>
                                          <OwnerMemberAccess>IgnoreCase Instance Static Public NonPublic</OwnerMemberAccess>
                                          <NewOwner>
                                            <Expression>Adapter.AdaptedControl</Expression>
                                            <Variables>
                                              <Instances>
                                                <SubTypes />
                                                <ArrayOfVariableInfo />
                                              </Instances>
                                              <ShowAvailableTypes>false</ShowAvailableTypes>
                                              <AddDelegates>false</AddDelegates>
                                              <ExpressionTypes>
                                                <DotNetType>
                                                  <TypeName>System.String, mscorlib</TypeName>
                                                </DotNetType>
                                                <DotNetType>
                                                  <TypeName>System.Boolean, mscorlib</TypeName>
                                                </DotNetType>
                                              </ExpressionTypes>
                                            </Variables>
                                            <OverrideOwner>false</OverrideOwner>
                                            <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                                            <StaticImports />
                                            <ImportBuiltinTypes>true</ImportBuiltinTypes>
                                            <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                                            <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                                            <DecimalSeparator>46</DecimalSeparator>
                                            <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                                            <ParseCultureMode>Invariant</ParseCultureMode>
                                            <CustomCultureLocale>en-US</CustomCultureLocale>
                                            <RealLiteralDataType>Decimal</RealLiteralDataType>
                                          </NewOwner>
                                          <StaticImports />
                                          <ImportBuiltinTypes>true</ImportBuiltinTypes>
                                          <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                                          <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                                          <DecimalSeparator>46</DecimalSeparator>
                                          <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                                          <ParseCultureMode>Invariant</ParseCultureMode>
                                          <CustomCultureLocale>en-US</CustomCultureLocale>
                                          <RealLiteralDataType>Decimal</RealLiteralDataType>
                                        </FleeExpression>
                                        <AsCompiledExpression>false</AsCompiledExpression>
                                      </VariableInfo>
                                    </ArrayOfVariableInfo>
                                  </Instances>
                                  <ShowAvailableTypes>false</ShowAvailableTypes>
                                  <AddDelegates>false</AddDelegates>
                                  <ExpressionTypes>
                                    <DotNetType>
                                      <TypeName>System.String, mscorlib</TypeName>
                                    </DotNetType>
                                    <DotNetType>
                                      <TypeName>System.Boolean, mscorlib</TypeName>
                                    </DotNetType>
                                  </ExpressionTypes>
                                </Variables>
                                <OverrideOwner>false</OverrideOwner>
                                <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                                <StaticImports />
                                <ImportBuiltinTypes>true</ImportBuiltinTypes>
                                <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                                <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                                <DecimalSeparator>46</DecimalSeparator>
                                <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                                <ParseCultureMode>Invariant</ParseCultureMode>
                                <CustomCultureLocale>en-US</CustomCultureLocale>
                                <RealLiteralDataType>Decimal</RealLiteralDataType>
                              </FleeExpression>
                              <AsCompiledExpression>false</AsCompiledExpression>
                              <MethodName />
                              <MethodIndex>1</MethodIndex>
                              <TargetInstance>
                                <Expression />
                              </TargetInstance>
                              <Parameters>
                                <Instances>
                                  <SubTypes />
                                  <ArrayOfVariableInfo />
                                </Instances>
                                <ShowAvailableTypes>false</ShowAvailableTypes>
                                <AddDelegates>false</AddDelegates>
                                <ExpressionTypes />
                              </Parameters>
                            </VariableInfo>
                          </ArrayOfVariableInfo>
                        </Instances>
                        <ShowAvailableTypes>false</ShowAvailableTypes>
                        <AddDelegates>false</AddDelegates>
                        <ExpressionTypes>
                          <DotNetType>
                            <TypeName>System.String, mscorlib</TypeName>
                          </DotNetType>
                          <DotNetType>
                            <TypeName>System.Boolean, mscorlib</TypeName>
                          </DotNetType>
                        </ExpressionTypes>
                      </Parameters>
                      <DelegateExpression>
                        <Expression />
                        <Variables>
                          <Instances>
                            <SubTypes />
                            <ArrayOfVariableInfo />
                          </Instances>
                          <ShowAvailableTypes>false</ShowAvailableTypes>
                          <AddDelegates>false</AddDelegates>
                          <ExpressionTypes />
                        </Variables>
                        <OverrideOwner>false</OverrideOwner>
                        <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                        <StaticImports />
                        <ImportBuiltinTypes>true</ImportBuiltinTypes>
                        <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                        <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                        <DecimalSeparator>46</DecimalSeparator>
                        <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                        <ParseCultureMode>Invariant</ParseCultureMode>
                        <CustomCultureLocale>en-US</CustomCultureLocale>
                        <RealLiteralDataType>Decimal</RealLiteralDataType>
                      </DelegateExpression>
                      <EventHandlerType>DelegateExpression</EventHandlerType>
                      <KeeperAction>
                        <Instances>
                          <SubTypes />
                          <ArrayOfActionProviderSettingsOfSimpleEngineEvent />
                        </Instances>
                      </KeeperAction>
                    </ObjectAction>
                  </ActionProviderSettingsOfSimpleEngineEvent>
                </ArrayOfActionProviderSettingsOfSimpleEngineEvent>
              </Instances>
            </Actions>
            <EnableSimpleLogs>true</EnableSimpleLogs>
            <EnableStopWatch>false</EnableStopWatch>
            <LogDump>true</LogDump>
            <DumpAllVars>true</DumpAllVars>
            <DumpVariables />
            <ExceptionDumpAllVars>false</ExceptionDumpAllVars>
            <ExceptionDumpVars />
            <ConditionProviders>
              <SubTypes />
              <ArrayOfConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>Client Source Condition</Name>
                  <Decription><![CDATA[Matches according to client identifying source parameters (Session, IP Address, country etc.)]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ClientSourceCondition`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>DotNetNuke Page Condition</Name>
                  <Decription><![CDATA[Matches according to the target DNN Page as defined in the url]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.DnnPageCondition`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>Dynamic Expression Condition</Name>
                  <Decription><![CDATA[Matches according to the evaluation of a dynamic code expression defined in the Flee language]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.FleeExpressionCondition`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>Membership Condition</Name>
                  <Decription><![CDATA[Matches according to the user membership]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.MembershipCondition`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>Portal Alias Condition</Name>
                  <Decription><![CDATA[Matches according to the portal alias used in the url]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.PortalAliasCondition`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>Static Condition</Name>
                  <Decription><![CDATA[Simply matches according to the static value configured]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.StaticConditionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>Sub Conditions Provider</Name>
                  <Decription><![CDATA[Allows to build a condition tree with sub conditions]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.SubConditionsProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
              </ArrayOfConditionProviderConfigOfSimpleEngineEvent>
            </ConditionProviders>
            <ActionProviders>
              <SubTypes />
              <ArrayOfActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Return Rest Operation Action</Name>
                  <Decription><![CDATA[Ends a rest web service dynamic method with a status and an optional result resource]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ReturnRestOperationAction, Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Define Variable</Name>
                  <Decription><![CDATA[This provider allows to declare and instanciate a single variable, which will be stored in the context "Item" dictionary]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.DefineVariableActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Define Variables Action Provider</Name>
                  <Decription><![CDATA[This provider allows to declare and instanciate a set of variables, which will be stored in the context "Item" dictionary]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.DefineVarsActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Deserialize Action Provider</Name>
                  <Decription><![CDATA[This provider allows to deserialize a given string, result of dynamic expression, into a typed object]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.DeserializeActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Display Message Action</Name>
                  <Decription><![CDATA[Displays a DNN message with token replace on the current page. A target module can be optionnally chosen.]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.DisplayMessageAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Execute Sql Action</Name>
                  <Decription><![CDATA[Execute a call to a stored procedure, a Sql script or sql query and returns the result]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ExecuteSqlAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Expression Action Provider</Name>
                  <Decription><![CDATA[This provider runs by evaluating a boolean expression and returning the result. The current PortalKeeperContext can be used as a dedicated variable]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ExpressionActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>File Manager Action</Name>
                  <Decription><![CDATA[This provider allows to browse or delete files and folders, given a parent path by dynamic expressions]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.FileManagerActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>File Read Action</Name>
                  <Decription><![CDATA[This provider allows to read a file to a given String variable, given its path by dynamic expressions]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.FileReadActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>File Write Action</Name>
                  <Decription><![CDATA[This provider allows to write a content to a file, given its path and the content to write by dynamic expressions]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.FileWriteActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Object Action</Name>
                  <Decription><![CDATA[This provider allows to do actions on object by setting properties, calling methods or hooking event handlers]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.GeneralObjectActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Log Event Action</Name>
                  <Decription><![CDATA[Inserts a new log in the DotNetNuke event log. Automatic email alert can be configured accordingly]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.LogEventAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Loop</Name>
                  <Decription><![CDATA[This provider allows to loop running a sub bot over a custom collection. On each run, the current item of the collection is affected to a custom variable.]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.LoopActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Multiple Action Provider</Name>
                  <Decription><![CDATA[Runs sub sequences of Actions]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.MultipleActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Object Actions Provider</Name>
                  <Decription><![CDATA[This provider allows to call object methods or set object properties]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ObjectActionsProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Load Profile Property</Name>
                  <Decription><![CDATA[This provider allows to load an indentity or personnalization profile property for a given user.]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ProfileLoadActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Save Profile Property</Name>
                  <Decription><![CDATA[This provider allows to save an identity or personnalization profile property for a given user.]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ProfileSaveActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Redirect Action</Name>
                  <Decription><![CDATA[Redirect the current client to a specified url]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.RedirectAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Run Program Action</Name>
                  <Decription><![CDATA[Run an executable program given its path and parameters]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.RunProgramAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Send Email Action</Name>
                  <Decription><![CDATA[Sends an email to a list of destination addresses. Token replace is available for all text fields and target address list.]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.SendEmailAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Serialize Action Provider</Name>
                  <Decription><![CDATA[This provider allows to serialize a given entity, result of dynamic expression, into a string]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.SerializeActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>String Filter Provider</Name>
                  <Decription><![CDATA[This provider allows to you to manipulate a string, by either running a series of transformations or performing xpath selects]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.StringFilterProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Sub Bot Action Provider</Name>
                  <Decription><![CDATA[This provider allows to run a sub-bot as a dedicated action. Because of the sequential nature of the engine, the subbot triggers each previous step up to the current step, the rules and action should be configured accordingly]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.SubBotActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Web Action</Name>
                  <Decription><![CDATA[Performs a web call to a web address]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.WebAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>While Action Provider</Name>
                  <Decription><![CDATA[This provider allows to loop running a sub bot while a boolean condition evaluates to true.]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.WhileActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
              </ArrayOfActionProviderConfigOfSimpleEngineEvent>
            </ActionProviders>
            <MainControlStep>Render</MainControlStep>
            <ChildControlId />
            <ControlEventName />
            <HandlerRegistrationStep>OnInit</HandlerRegistrationStep>
            <BaseHandlerMode>Before</BaseHandlerMode>
            <NotOnFirstLoad>false</NotOnFirstLoad>
            <NotOnPostBacks>false</NotOnPostBacks>
            <EditChildControl>false</EditChildControl>
            <EditEventName>false</EditEventName>
          </DynamicHandlerSettings>
          <DynamicHandlerSettings xsi:type="DynamicHandlerSettingsOfCaptchaControl">
            <Name>DNNCaptcha Handler Validate</Name>
            <Decription><![CDATA[This dynamic handler hooks to the native DNNCaptcha UserValidated event:

* Only if the native DNN Captcha is valid (to prevent infinite loop since the event is fired again upon unvalidation).

* Extracts the Recaptcha Challenge and Solution from the posted form.

* Calls Google web service with those values to validate Recaptcha.

* If Recaptcha fails to validate, invalidates the original DNN Captcha, which triggers DNN Localized validation error message.]]></Decription>
            <Enabled>true</Enabled>
            <Mode>Actions</Mode>
            <Variables>
              <Instances>
                <SubTypes>
                  <string>Aricie.DNN.Services.Flee.GeneralVariableInfo, Aricie.DNN</string>
                </SubTypes>
                <ArrayOfVariableInfo>
                  <VariableInfo xsi:type="GeneralVariableInfo">
                    <Name>RecaptchaPrivateKey</Name>
                    <Decription><![CDATA[This is the private key provided to you upon registration of your website at https://www.google.com/recaptcha/admin#list.

Copy the key to the "Value" Textbox below.]]></Decription>
                    <EvaluationMode>Dynamic</EvaluationMode>
                    <Scope>Local</Scope>
                    <DotNetType>
                      <TypeName>System.String, mscorlib</TypeName>
                    </DotNetType>
                    <VariableMode>Instance</VariableMode>
                    <InstanceMode>Off</InstanceMode>
                    <UseClone>false</UseClone>
                    <SerializableInstance>
                      <Value Type="System.String, mscorlib"><string>6LfByvUSAAAAAJR3WfzgF1pPpMi4qsXtcisEmY7l</string></Value>
                    </SerializableInstance>
                    <AdvancedExpression>false</AdvancedExpression>
                    <FleeExpression>
                      <Expression />
                      <Variables>
                        <Instances>
                          <SubTypes />
                          <ArrayOfVariableInfo />
                        </Instances>
                        <ShowAvailableTypes>false</ShowAvailableTypes>
                        <AddDelegates>false</AddDelegates>
                        <ExpressionTypes />
                      </Variables>
                      <OverrideOwner>false</OverrideOwner>
                      <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                      <StaticImports />
                      <ImportBuiltinTypes>true</ImportBuiltinTypes>
                      <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                      <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                      <DecimalSeparator>46</DecimalSeparator>
                      <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                      <ParseCultureMode>Invariant</ParseCultureMode>
                      <CustomCultureLocale>en-US</CustomCultureLocale>
                      <RealLiteralDataType>Decimal</RealLiteralDataType>
                    </FleeExpression>
                    <AsCompiledExpression>false</AsCompiledExpression>
                    <MethodName />
                    <MethodIndex>1</MethodIndex>
                    <TargetInstance>
                      <Expression />
                    </TargetInstance>
                    <Parameters>
                      <Instances>
                        <SubTypes />
                        <ArrayOfVariableInfo />
                      </Instances>
                      <ShowAvailableTypes>false</ShowAvailableTypes>
                      <AddDelegates>false</AddDelegates>
                      <ExpressionTypes />
                    </Parameters>
                  </VariableInfo>
                </ArrayOfVariableInfo>
              </Instances>
              <ShowAvailableTypes>false</ShowAvailableTypes>
              <AddDelegates>false</AddDelegates>
              <ExpressionTypes>
                <DotNetType>
                  <TypeName>System.String, mscorlib</TypeName>
                </DotNetType>
                <DotNetType>
                  <TypeName>System.Boolean, mscorlib</TypeName>
                </DotNetType>
              </ExpressionTypes>
            </Variables>
            <Actions>
              <Instances>
                <SubTypes>
                  <string>Aricie.DNN.Modules.PortalKeeper.MultipleActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</string>
                </SubTypes>
                <ArrayOfActionProviderSettingsOfSimpleEngineEvent>
                  <ActionProviderSettingsOfSimpleEngineEvent xsi:type="MultipleActionProviderOfSimpleEngineEvent">
                    <Name>Check ReCaptcha if dnncaptcha is valid</Name>
                    <Decription><![CDATA[The actions of that handler are grouped within a conditional Action, which checks for DNN Captcha validity. This is to prevent an infinite loop since in case of Recaptcha invalidation, the original event is fired again and should not trigger the action sequence again.]]></Decription>
                    <Enabled>true</Enabled>
                    <ProviderName>Multiple Action Provider</ProviderName>
                    <LifeCycleEvent>Run</LifeCycleEvent>
                    <StopOnFailure>false</StopOnFailure>
                    <ExitAction>false</ExitAction>
                    <RethrowException>false</RethrowException>
                    <DontLogExceptions>false</DontLogExceptions>
                    <CaptureException>false</CaptureException>
                    <ExceptionVarName>ActionException</ExceptionVarName>
                    <AddSleepTime>false</AddSleepTime>
                    <SleepTime d="00:00:00" />
                    <UseSemaphore>false</UseSemaphore>
                    <SemaphoreName>Aricie-ActionSemaphore</SemaphoreName>
                    <NbConcurrentThreads>1</NbConcurrentThreads>
                    <SynchronisationTimeout d="00:00:00" />
                    <ConditionalAction>true</ConditionalAction>
                    <Condition>
                      <Instances>
                        <SubTypes>
                          <string>Aricie.DNN.Modules.PortalKeeper.FleeExpressionCondition`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</string>
                        </SubTypes>
                        <ArrayOfConditionProviderSettingsOfSimpleEngineEvent>
                          <ConditionProviderSettingsOfSimpleEngineEvent xsi:type="FleeExpressionConditionOfSimpleEngineEvent">
                            <Name>Get DNNCaptcha ValidState</Name>
                            <Decription><![CDATA[That condition checks the IsValid Property of the passed event args. 

Note that DNN fails to properly use the System.Web.UI.WebControls.ServerValidateEventArgs item. Usually, one would invalidate the event by setting that property to false, which is not accounted for by DNN. Instead, we have to call the Validate method with an arbitrary failing value.]]></Decription>
                            <Enabled>true</Enabled>
                            <ProviderName>Dynamic Expression Condition</ProviderName>
                            <Negate>false</Negate>
                            <IsMandatory>false</IsMandatory>
                            <FleeExpression>
                              <Expression>args.IsValid</Expression>
                              <Variables>
                                <Instances>
                                  <SubTypes />
                                  <ArrayOfVariableInfo />
                                </Instances>
                                <ShowAvailableTypes>false</ShowAvailableTypes>
                                <AddDelegates>false</AddDelegates>
                                <ExpressionTypes>
                                  <DotNetType>
                                    <TypeName>System.String, mscorlib</TypeName>
                                  </DotNetType>
                                  <DotNetType>
                                    <TypeName>System.Boolean, mscorlib</TypeName>
                                  </DotNetType>
                                </ExpressionTypes>
                              </Variables>
                              <OverrideOwner>false</OverrideOwner>
                              <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                              <StaticImports />
                              <ImportBuiltinTypes>true</ImportBuiltinTypes>
                              <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                              <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                              <DecimalSeparator>46</DecimalSeparator>
                              <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                              <ParseCultureMode>Invariant</ParseCultureMode>
                              <CustomCultureLocale>en-US</CustomCultureLocale>
                              <RealLiteralDataType>Decimal</RealLiteralDataType>
                            </FleeExpression>
                          </ConditionProviderSettingsOfSimpleEngineEvent>
                        </ArrayOfConditionProviderSettingsOfSimpleEngineEvent>
                      </Instances>
                    </Condition>
                    <AlternateAction>
                      <Instances>
                        <SubTypes />
                        <ArrayOfActionProviderSettingsOfSimpleEngineEvent />
                      </Instances>
                    </AlternateAction>
                    <CaptureRunDuration>false</CaptureRunDuration>
                    <RunDurationVarName />
                    <DisablePerformanceLogger>false</DisablePerformanceLogger>
                    <UseTaskQueue>false</UseTaskQueue>
                    <MultipleActionMode>Sequence</MultipleActionMode>
                    <KeeperAction>
                      <Instances>
                        <SubTypes>
                          <string>Aricie.DNN.Modules.PortalKeeper.DefineVariableActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</string>
                          <string>Aricie.DNN.Modules.PortalKeeper.WebAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</string>
                          <string>Aricie.DNN.Modules.PortalKeeper.GeneralObjectActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</string>
                        </SubTypes>
                        <ArrayOfActionProviderSettingsOfSimpleEngineEvent>
                          <ActionProviderSettingsOfSimpleEngineEvent xsi:type="DefineVariableActionProviderOfSimpleEngineEvent">
                            <Name>Get ReCaptchaChallenge from posted Data</Name>
                            <Decription><![CDATA[This action defines the ReCaptchaChallenge variable, as submitted in the user form, to be passed to the call to Google Recaptcha web service.]]></Decription>
                            <Enabled>true</Enabled>
                            <ProviderName>Define Variable</ProviderName>
                            <LifeCycleEvent>Run</LifeCycleEvent>
                            <StopOnFailure>false</StopOnFailure>
                            <ExitAction>false</ExitAction>
                            <RethrowException>false</RethrowException>
                            <DontLogExceptions>false</DontLogExceptions>
                            <CaptureException>false</CaptureException>
                            <ExceptionVarName>ActionException</ExceptionVarName>
                            <AddSleepTime>false</AddSleepTime>
                            <SleepTime d="00:00:00" />
                            <UseSemaphore>false</UseSemaphore>
                            <SemaphoreName>Aricie-ActionSemaphore</SemaphoreName>
                            <NbConcurrentThreads>1</NbConcurrentThreads>
                            <SynchronisationTimeout d="00:00:00" />
                            <ConditionalAction>false</ConditionalAction>
                            <CaptureRunDuration>false</CaptureRunDuration>
                            <RunDurationVarName />
                            <DisablePerformanceLogger>false</DisablePerformanceLogger>
                            <UseTaskQueue>false</UseTaskQueue>
                            <EnableCache>false</EnableCache>
                            <CacheKeyFormat>{0}</CacheKeyFormat>
                            <ProcessTokens>false</ProcessTokens>
                            <UseSingleton>false</UseSingleton>
                            <CacheDuration d="00:00:10" />
                            <Variable>
                              <Name>ReCaptchaChallenge</Name>
                              <Decription><![CDATA[The variable is defined as a dynamic Flee expression over the default Expression Owner of type PortalKeeperContext , which exposes the DNNContext property, with subproperties to access the main Request components.]]></Decription>
                              <EvaluationMode>Dynamic</EvaluationMode>
                              <Scope>Local</Scope>
                              <DotNetType>
                                <TypeName>System.String, mscorlib</TypeName>
                              </DotNetType>
                              <VariableMode>Expression</VariableMode>
                              <InstanceMode>Off</InstanceMode>
                              <UseClone>false</UseClone>
                              <AdvancedExpression>false</AdvancedExpression>
                              <FleeExpression>
                                <Expression>DNNContext.HttpContext.Request.Form["recaptcha_challenge_field"]</Expression>
                                <Variables>
                                  <Instances>
                                    <SubTypes />
                                    <ArrayOfVariableInfo />
                                  </Instances>
                                  <ShowAvailableTypes>false</ShowAvailableTypes>
                                  <AddDelegates>false</AddDelegates>
                                  <ExpressionTypes />
                                </Variables>
                                <OverrideOwner>false</OverrideOwner>
                                <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                                <StaticImports />
                                <ImportBuiltinTypes>true</ImportBuiltinTypes>
                                <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                                <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                                <DecimalSeparator>46</DecimalSeparator>
                                <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                                <ParseCultureMode>Invariant</ParseCultureMode>
                                <CustomCultureLocale>en-US</CustomCultureLocale>
                                <RealLiteralDataType>Decimal</RealLiteralDataType>
                              </FleeExpression>
                              <AsCompiledExpression>false</AsCompiledExpression>
                              <MethodName />
                              <MethodIndex>1</MethodIndex>
                              <TargetInstance>
                                <Expression />
                              </TargetInstance>
                              <Parameters>
                                <Instances>
                                  <SubTypes />
                                  <ArrayOfVariableInfo />
                                </Instances>
                                <ShowAvailableTypes>false</ShowAvailableTypes>
                                <AddDelegates>false</AddDelegates>
                                <ExpressionTypes />
                              </Parameters>
                            </Variable>
                            <GetFromHistory>false</GetFromHistory>
                          </ActionProviderSettingsOfSimpleEngineEvent>
                          <ActionProviderSettingsOfSimpleEngineEvent xsi:type="DefineVariableActionProviderOfSimpleEngineEvent">
                            <Name>Get ReCaptchaResponse from posted Data</Name>
                            <Decription><![CDATA[This action defines the ReCaptchaResponse variable, as submitted in the user form, to be passed to the call to Google Recaptcha web service.]]></Decription>
                            <Enabled>true</Enabled>
                            <ProviderName>Define Variable</ProviderName>
                            <LifeCycleEvent>Run</LifeCycleEvent>
                            <StopOnFailure>false</StopOnFailure>
                            <ExitAction>false</ExitAction>
                            <RethrowException>false</RethrowException>
                            <DontLogExceptions>false</DontLogExceptions>
                            <CaptureException>false</CaptureException>
                            <ExceptionVarName>ActionException</ExceptionVarName>
                            <AddSleepTime>false</AddSleepTime>
                            <SleepTime d="00:00:00" />
                            <UseSemaphore>false</UseSemaphore>
                            <SemaphoreName>Aricie-ActionSemaphore</SemaphoreName>
                            <NbConcurrentThreads>1</NbConcurrentThreads>
                            <SynchronisationTimeout d="00:00:00" />
                            <ConditionalAction>false</ConditionalAction>
                            <CaptureRunDuration>false</CaptureRunDuration>
                            <RunDurationVarName />
                            <DisablePerformanceLogger>false</DisablePerformanceLogger>
                            <UseTaskQueue>false</UseTaskQueue>
                            <EnableCache>false</EnableCache>
                            <CacheKeyFormat>{0}</CacheKeyFormat>
                            <ProcessTokens>false</ProcessTokens>
                            <UseSingleton>false</UseSingleton>
                            <CacheDuration d="00:00:10" />
                            <Variable>
                              <Name>ReCaptchaResponse</Name>
                              <Decription><![CDATA[The variable is defined as a dynamic Flee expression over the default Expression Owner of type PortalKeeperContext , which exposes the DNNContext property, with subproperties to access the main Request components.]]></Decription>
                              <EvaluationMode>Dynamic</EvaluationMode>
                              <Scope>Local</Scope>
                              <DotNetType>
                                <TypeName>System.String, mscorlib</TypeName>
                              </DotNetType>
                              <VariableMode>Expression</VariableMode>
                              <InstanceMode>Off</InstanceMode>
                              <UseClone>false</UseClone>
                              <AdvancedExpression>false</AdvancedExpression>
                              <FleeExpression>
                                <Expression>DNNContext.HttpContext.Request.Form["recaptcha_response_field"]</Expression>
                                <Variables>
                                  <Instances>
                                    <SubTypes />
                                    <ArrayOfVariableInfo />
                                  </Instances>
                                  <ShowAvailableTypes>false</ShowAvailableTypes>
                                  <AddDelegates>false</AddDelegates>
                                  <ExpressionTypes />
                                </Variables>
                                <OverrideOwner>false</OverrideOwner>
                                <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                                <StaticImports />
                                <ImportBuiltinTypes>true</ImportBuiltinTypes>
                                <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                                <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                                <DecimalSeparator>46</DecimalSeparator>
                                <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                                <ParseCultureMode>Invariant</ParseCultureMode>
                                <CustomCultureLocale>en-US</CustomCultureLocale>
                                <RealLiteralDataType>Decimal</RealLiteralDataType>
                              </FleeExpression>
                              <AsCompiledExpression>false</AsCompiledExpression>
                              <MethodName />
                              <MethodIndex>1</MethodIndex>
                              <TargetInstance>
                                <Expression />
                              </TargetInstance>
                              <Parameters>
                                <Instances>
                                  <SubTypes />
                                  <ArrayOfVariableInfo />
                                </Instances>
                                <ShowAvailableTypes>false</ShowAvailableTypes>
                                <AddDelegates>false</AddDelegates>
                                <ExpressionTypes />
                              </Parameters>
                            </Variable>
                            <GetFromHistory>false</GetFromHistory>
                          </ActionProviderSettingsOfSimpleEngineEvent>
                          <ActionProviderSettingsOfSimpleEngineEvent xsi:type="WebActionOfSimpleEngineEvent">
                            <Name>Call Google service to Validate Recaptcha value</Name>
                            <Decription><![CDATA[This is a web action that posts the Recaptcha Challenge and solution variables as previously retrieved from the posted user form, and sets the returned string to the ReCaptchaVerifResult variable.]]></Decription>
                            <Enabled>true</Enabled>
                            <ProviderName>Web Action</ProviderName>
                            <LifeCycleEvent>Run</LifeCycleEvent>
                            <StopOnFailure>false</StopOnFailure>
                            <ExitAction>false</ExitAction>
                            <RethrowException>false</RethrowException>
                            <DontLogExceptions>false</DontLogExceptions>
                            <CaptureException>false</CaptureException>
                            <ExceptionVarName>ActionException</ExceptionVarName>
                            <AddSleepTime>false</AddSleepTime>
                            <SleepTime d="00:00:00" />
                            <UseSemaphore>false</UseSemaphore>
                            <SemaphoreName>Aricie-ActionSemaphore</SemaphoreName>
                            <NbConcurrentThreads>1</NbConcurrentThreads>
                            <SynchronisationTimeout d="00:00:00" />
                            <ConditionalAction>false</ConditionalAction>
                            <CaptureRunDuration>false</CaptureRunDuration>
                            <RunDurationVarName />
                            <DisablePerformanceLogger>false</DisablePerformanceLogger>
                            <UseTaskQueue>false</UseTaskQueue>
                            <EnableCache>false</EnableCache>
                            <CacheKeyFormat>{0}</CacheKeyFormat>
                            <ProcessTokens>false</ProcessTokens>
                            <UseSingleton>false</UseSingleton>
                            <CacheDuration d="00:00:10" />
                            <OutputName>ReCaptchaVerifResult</OutputName>
                            <AddItems>false</AddItems>
                            <Simulation>false</Simulation>
                            <SimulationData><![CDATA[]]></SimulationData>
                            <WebRequest>
                              <UrlMode>String</UrlMode>
                              <Url>http://www.google.com/recaptcha/api/verify</Url>
                              <UrlExpression>
                                <Expression />
                                <Variables>
                                  <Instances>
                                    <SubTypes />
                                    <ArrayOfVariableInfo />
                                  </Instances>
                                  <ShowAvailableTypes>false</ShowAvailableTypes>
                                  <AddDelegates>false</AddDelegates>
                                  <ExpressionTypes />
                                </Variables>
                                <OverrideOwner>false</OverrideOwner>
                                <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                                <StaticImports />
                                <ImportBuiltinTypes>true</ImportBuiltinTypes>
                                <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                                <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                                <DecimalSeparator>46</DecimalSeparator>
                                <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                                <ParseCultureMode>Invariant</ParseCultureMode>
                                <CustomCultureLocale>en-US</CustomCultureLocale>
                                <RealLiteralDataType>Decimal</RealLiteralDataType>
                              </UrlExpression>
                              <Method>Post</Method>
                              <ParametersMode>Post</ParametersMode>
                              <TimeOut d="00:00:10" />
                              <RetryNb>0</RetryNb>
                              <UseProxyPool>false</UseProxyPool>
                              <ProxyExpression>
                                <Expression />
                              </ProxyExpression>
                              <ProxyIsMandatory>false</ProxyIsMandatory>
                              <LogRequest>true</LogRequest>
                            </WebRequest>
                            <InputParameters>
                              <Instances>
                                <SubTypes>
                                  <string>Aricie.DNN.Services.Flee.GeneralVariableInfo, Aricie.DNN</string>
                                </SubTypes>
                                <ArrayOfVariableInfo>
                                  <VariableInfo xsi:type="GeneralVariableInfo">
                                    <Name>privatekey</Name>
                                    <Decription><![CDATA[This is the Recaptcha private key, as registered on Google's dedicated Recaptcha web site, and declared in the global Dynamic Handler parameters for easier configuration.]]></Decription>
                                    <EvaluationMode>Dynamic</EvaluationMode>
                                    <Scope>Local</Scope>
                                    <DotNetType>
                                      <TypeName>System.String, mscorlib</TypeName>
                                    </DotNetType>
                                    <VariableMode>Expression</VariableMode>
                                    <InstanceMode>Off</InstanceMode>
                                    <UseClone>false</UseClone>
                                    <AdvancedExpression>false</AdvancedExpression>
                                    <FleeExpression>
                                      <Expression>RecaptchaPrivateKey</Expression>
                                      <Variables>
                                        <Instances>
                                          <SubTypes />
                                          <ArrayOfVariableInfo />
                                        </Instances>
                                        <ShowAvailableTypes>false</ShowAvailableTypes>
                                        <AddDelegates>false</AddDelegates>
                                        <ExpressionTypes />
                                      </Variables>
                                      <OverrideOwner>false</OverrideOwner>
                                      <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                                      <StaticImports />
                                      <ImportBuiltinTypes>true</ImportBuiltinTypes>
                                      <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                                      <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                                      <DecimalSeparator>46</DecimalSeparator>
                                      <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                                      <ParseCultureMode>Invariant</ParseCultureMode>
                                      <CustomCultureLocale>en-US</CustomCultureLocale>
                                      <RealLiteralDataType>Decimal</RealLiteralDataType>
                                    </FleeExpression>
                                    <AsCompiledExpression>false</AsCompiledExpression>
                                    <MethodName />
                                    <MethodIndex>1</MethodIndex>
                                    <TargetInstance>
                                      <Expression />
                                    </TargetInstance>
                                    <Parameters>
                                      <Instances>
                                        <SubTypes />
                                        <ArrayOfVariableInfo />
                                      </Instances>
                                      <ShowAvailableTypes>false</ShowAvailableTypes>
                                      <AddDelegates>false</AddDelegates>
                                      <ExpressionTypes />
                                    </Parameters>
                                  </VariableInfo>
                                  <VariableInfo xsi:type="GeneralVariableInfo">
                                    <Name>remoteip</Name>
                                    <Decription><![CDATA[As defined in Recaptcha API (see https://developers.google.com/recaptcha/docs/verify), this is the IP address of the user who solved the Recaptcha.

It is computed from a dynamic Flee expression over the default Expression Owner of type PortalKeeperContext , which exposes the DNNContext property, with subproperties to access the main Request components. 

The IPAddress property used here accounts for Http Headers to figure out the correct IP address when the client or server are behind proxies or firewalls.]]></Decription>
                                    <EvaluationMode>Dynamic</EvaluationMode>
                                    <Scope>Local</Scope>
                                    <DotNetType>
                                      <TypeName>System.String, mscorlib</TypeName>
                                    </DotNetType>
                                    <VariableMode>Expression</VariableMode>
                                    <InstanceMode>Off</InstanceMode>
                                    <UseClone>false</UseClone>
                                    <AdvancedExpression>false</AdvancedExpression>
                                    <FleeExpression>
                                      <Expression>DnnContext.IPAddress</Expression>
                                      <Variables>
                                        <Instances>
                                          <SubTypes />
                                          <ArrayOfVariableInfo />
                                        </Instances>
                                        <ShowAvailableTypes>false</ShowAvailableTypes>
                                        <AddDelegates>false</AddDelegates>
                                        <ExpressionTypes />
                                      </Variables>
                                      <OverrideOwner>false</OverrideOwner>
                                      <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                                      <StaticImports />
                                      <ImportBuiltinTypes>true</ImportBuiltinTypes>
                                      <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                                      <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                                      <DecimalSeparator>46</DecimalSeparator>
                                      <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                                      <ParseCultureMode>Invariant</ParseCultureMode>
                                      <CustomCultureLocale>en-US</CustomCultureLocale>
                                      <RealLiteralDataType>Decimal</RealLiteralDataType>
                                    </FleeExpression>
                                    <AsCompiledExpression>false</AsCompiledExpression>
                                    <MethodName />
                                    <MethodIndex>1</MethodIndex>
                                    <TargetInstance>
                                      <Expression />
                                    </TargetInstance>
                                    <Parameters>
                                      <Instances>
                                        <SubTypes />
                                        <ArrayOfVariableInfo />
                                      </Instances>
                                      <ShowAvailableTypes>false</ShowAvailableTypes>
                                      <AddDelegates>false</AddDelegates>
                                      <ExpressionTypes />
                                    </Parameters>
                                  </VariableInfo>
                                  <VariableInfo xsi:type="GeneralVariableInfo">
                                    <Name>challenge</Name>
                                    <Decription><![CDATA[According to the official documentation (see https://developers.google.com/recaptcha/docs/verify), this is the value of the form field provided by Google together with the challenge image.

It is defined from the previously retrieved ReCaptchaChallenge Variable.]]></Decription>
                                    <EvaluationMode>Dynamic</EvaluationMode>
                                    <Scope>Local</Scope>
                                    <DotNetType>
                                      <TypeName>System.String, mscorlib</TypeName>
                                    </DotNetType>
                                    <VariableMode>Expression</VariableMode>
                                    <InstanceMode>Off</InstanceMode>
                                    <UseClone>false</UseClone>
                                    <AdvancedExpression>false</AdvancedExpression>
                                    <FleeExpression>
                                      <Expression>ReCaptchaChallenge</Expression>
                                      <Variables>
                                        <Instances>
                                          <SubTypes />
                                          <ArrayOfVariableInfo />
                                        </Instances>
                                        <ShowAvailableTypes>false</ShowAvailableTypes>
                                        <AddDelegates>false</AddDelegates>
                                        <ExpressionTypes />
                                      </Variables>
                                      <OverrideOwner>false</OverrideOwner>
                                      <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                                      <StaticImports />
                                      <ImportBuiltinTypes>true</ImportBuiltinTypes>
                                      <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                                      <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                                      <DecimalSeparator>46</DecimalSeparator>
                                      <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                                      <ParseCultureMode>Invariant</ParseCultureMode>
                                      <CustomCultureLocale>en-US</CustomCultureLocale>
                                      <RealLiteralDataType>Decimal</RealLiteralDataType>
                                    </FleeExpression>
                                    <AsCompiledExpression>false</AsCompiledExpression>
                                    <MethodName />
                                    <MethodIndex>1</MethodIndex>
                                    <TargetInstance>
                                      <Expression />
                                    </TargetInstance>
                                    <Parameters>
                                      <Instances>
                                        <SubTypes />
                                        <ArrayOfVariableInfo />
                                      </Instances>
                                      <ShowAvailableTypes>false</ShowAvailableTypes>
                                      <AddDelegates>false</AddDelegates>
                                      <ExpressionTypes />
                                    </Parameters>
                                  </VariableInfo>
                                  <VariableInfo xsi:type="GeneralVariableInfo">
                                    <Name>response</Name>
                                    <Decription><![CDATA[According to the official documentation (see https://developers.google.com/recaptcha/docs/verify), this is the value of the form field filled by the user.

It is defined from the previously retrieved ReCaptchaResponse Variable.]]></Decription>
                                    <EvaluationMode>Dynamic</EvaluationMode>
                                    <Scope>Local</Scope>
                                    <DotNetType>
                                      <TypeName>System.String, mscorlib</TypeName>
                                    </DotNetType>
                                    <VariableMode>Expression</VariableMode>
                                    <InstanceMode>Off</InstanceMode>
                                    <UseClone>false</UseClone>
                                    <AdvancedExpression>false</AdvancedExpression>
                                    <FleeExpression>
                                      <Expression>ReCaptchaResponse</Expression>
                                      <Variables>
                                        <Instances>
                                          <SubTypes />
                                          <ArrayOfVariableInfo />
                                        </Instances>
                                        <ShowAvailableTypes>false</ShowAvailableTypes>
                                        <AddDelegates>false</AddDelegates>
                                        <ExpressionTypes />
                                      </Variables>
                                      <OverrideOwner>false</OverrideOwner>
                                      <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                                      <StaticImports />
                                      <ImportBuiltinTypes>true</ImportBuiltinTypes>
                                      <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                                      <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                                      <DecimalSeparator>46</DecimalSeparator>
                                      <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                                      <ParseCultureMode>Invariant</ParseCultureMode>
                                      <CustomCultureLocale>en-US</CustomCultureLocale>
                                      <RealLiteralDataType>Decimal</RealLiteralDataType>
                                    </FleeExpression>
                                    <AsCompiledExpression>false</AsCompiledExpression>
                                    <MethodName />
                                    <MethodIndex>1</MethodIndex>
                                    <TargetInstance>
                                      <Expression />
                                    </TargetInstance>
                                    <Parameters>
                                      <Instances>
                                        <SubTypes />
                                        <ArrayOfVariableInfo />
                                      </Instances>
                                      <ShowAvailableTypes>false</ShowAvailableTypes>
                                      <AddDelegates>false</AddDelegates>
                                      <ExpressionTypes />
                                    </Parameters>
                                  </VariableInfo>
                                </ArrayOfVariableInfo>
                              </Instances>
                            </InputParameters>
                            <HeaderParameters>
                              <Instances>
                                <SubTypes />
                                <ArrayOfVariableInfo />
                              </Instances>
                            </HeaderParameters>
                            <IncludePostData>false</IncludePostData>
                            <PostDataVar>postData</PostDataVar>
                          </ActionProviderSettingsOfSimpleEngineEvent>
                          <ActionProviderSettingsOfSimpleEngineEvent xsi:type="GeneralObjectActionProviderOfSimpleEngineEvent">
                            <Name>Unvalidate native DNNCaptcha if ReCaptcha is invalid</Name>
                            <Decription><![CDATA[In order to keep the original DNN API functional, we previously forced the native DNNCaptcha to automatically validate. Now, if the Recaptcha version is invalid, we force the native DNNCatpcha to invalidate.

This is done by checking the Http Response sent from Google service for validity, and passing an arbitrary wrong value to the DotNetNuke.UI.WebControls.CaptchaControl.Validate(String userData) method]]></Decription>
                            <Enabled>true</Enabled>
                            <ProviderName>Object Action</ProviderName>
                            <LifeCycleEvent>Run</LifeCycleEvent>
                            <StopOnFailure>false</StopOnFailure>
                            <ExitAction>false</ExitAction>
                            <RethrowException>false</RethrowException>
                            <DontLogExceptions>false</DontLogExceptions>
                            <CaptureException>false</CaptureException>
                            <ExceptionVarName>ActionException</ExceptionVarName>
                            <AddSleepTime>false</AddSleepTime>
                            <SleepTime d="00:00:00" />
                            <UseSemaphore>false</UseSemaphore>
                            <SemaphoreName>Aricie-ActionSemaphore</SemaphoreName>
                            <NbConcurrentThreads>1</NbConcurrentThreads>
                            <SynchronisationTimeout d="00:00:00" />
                            <ConditionalAction>true</ConditionalAction>
                            <Condition>
                              <Instances>
                                <SubTypes>
                                  <string>Aricie.DNN.Modules.PortalKeeper.FleeExpressionCondition`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</string>
                                </SubTypes>
                                <ArrayOfConditionProviderSettingsOfSimpleEngineEvent>
                                  <ConditionProviderSettingsOfSimpleEngineEvent xsi:type="FleeExpressionConditionOfSimpleEngineEvent">
                                    <Name>Test Recaptcha Return</Name>
                                    <Decription><![CDATA[]]></Decription>
                                    <Enabled>true</Enabled>
                                    <ProviderName>Dynamic Expression Condition</ProviderName>
                                    <Negate>false</Negate>
                                    <IsMandatory>false</IsMandatory>
                                    <FleeExpression>
                                      <Expression>Not ReCaptchaVerifResult.contains("true")</Expression>
                                      <Variables>
                                        <Instances>
                                          <SubTypes />
                                          <ArrayOfVariableInfo />
                                        </Instances>
                                        <ShowAvailableTypes>false</ShowAvailableTypes>
                                        <AddDelegates>false</AddDelegates>
                                        <ExpressionTypes />
                                      </Variables>
                                      <OverrideOwner>false</OverrideOwner>
                                      <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                                      <StaticImports />
                                      <ImportBuiltinTypes>true</ImportBuiltinTypes>
                                      <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                                      <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                                      <DecimalSeparator>46</DecimalSeparator>
                                      <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                                      <ParseCultureMode>Invariant</ParseCultureMode>
                                      <CustomCultureLocale>en-US</CustomCultureLocale>
                                      <RealLiteralDataType>Decimal</RealLiteralDataType>
                                    </FleeExpression>
                                  </ConditionProviderSettingsOfSimpleEngineEvent>
                                </ArrayOfConditionProviderSettingsOfSimpleEngineEvent>
                              </Instances>
                            </Condition>
                            <AlternateAction>
                              <Instances>
                                <SubTypes />
                                <ArrayOfActionProviderSettingsOfSimpleEngineEvent />
                              </Instances>
                            </AlternateAction>
                            <CaptureRunDuration>false</CaptureRunDuration>
                            <RunDurationVarName />
                            <DisablePerformanceLogger>false</DisablePerformanceLogger>
                            <UseTaskQueue>false</UseTaskQueue>
                            <EnableCache>false</EnableCache>
                            <CacheKeyFormat>{0}</CacheKeyFormat>
                            <ProcessTokens>false</ProcessTokens>
                            <UseSingleton>false</UseSingleton>
                            <CacheDuration d="00:00:10" />
                            <OutputName />
                            <AddItems>false</AddItems>
                            <Simulation>false</Simulation>
                            <SimulationData><![CDATA[]]></SimulationData>
                            <ObjectAction>
                              <Enabled>true</Enabled>
                              <LockTarget>true</LockTarget>
                              <DotNetType>
                                <TypeName>DotNetNuke.UI.WebControls.CaptchaControl, DotNetNuke</TypeName>
                              </DotNetType>
                              <Instance>
                                <Expression>Adapter.AdaptedControl</Expression>
                                <Variables>
                                  <Instances>
                                    <SubTypes />
                                    <ArrayOfVariableInfo />
                                  </Instances>
                                  <ShowAvailableTypes>false</ShowAvailableTypes>
                                  <AddDelegates>false</AddDelegates>
                                  <ExpressionTypes>
                                    <DotNetType>
                                      <TypeName>System.String, mscorlib</TypeName>
                                    </DotNetType>
                                    <DotNetType>
                                      <TypeName>System.Boolean, mscorlib</TypeName>
                                    </DotNetType>
                                  </ExpressionTypes>
                                </Variables>
                                <OverrideOwner>false</OverrideOwner>
                                <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                                <StaticImports />
                                <ImportBuiltinTypes>true</ImportBuiltinTypes>
                                <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                                <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                                <DecimalSeparator>46</DecimalSeparator>
                                <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                                <ParseCultureMode>Invariant</ParseCultureMode>
                                <CustomCultureLocale>en-US</CustomCultureLocale>
                                <RealLiteralDataType>Decimal</RealLiteralDataType>
                              </Instance>
                              <ActionMode>CallMethod</ActionMode>
                              <MemberName>Validate</MemberName>
                              <MemberIndex>1</MemberIndex>
                              <PropertyValue>
                                <Expression />
                                <Variables>
                                  <Instances>
                                    <SubTypes />
                                    <ArrayOfVariableInfo />
                                  </Instances>
                                  <ShowAvailableTypes>false</ShowAvailableTypes>
                                  <AddDelegates>false</AddDelegates>
                                  <ExpressionTypes />
                                </Variables>
                                <OverrideOwner>false</OverrideOwner>
                                <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                                <StaticImports />
                                <ImportBuiltinTypes>true</ImportBuiltinTypes>
                                <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                                <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                                <DecimalSeparator>46</DecimalSeparator>
                                <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                                <ParseCultureMode>Invariant</ParseCultureMode>
                                <CustomCultureLocale>en-US</CustomCultureLocale>
                                <RealLiteralDataType>Decimal</RealLiteralDataType>
                              </PropertyValue>
                              <Parameters>
                                <Instances>
                                  <SubTypes>
                                    <string>Aricie.DNN.Services.Flee.GeneralVariableInfo, Aricie.DNN</string>
                                  </SubTypes>
                                  <ArrayOfVariableInfo>
                                    <VariableInfo xsi:type="GeneralVariableInfo">
                                      <Name>userData</Name>
                                      <Decription><![CDATA[The passed parameter is arbitrary and choosen to always invalidate the native DNN Captcha.]]></Decription>
                                      <EvaluationMode>Dynamic</EvaluationMode>
                                      <Scope>Local</Scope>
                                      <DotNetType>
                                        <TypeName>System.String, mscorlib</TypeName>
                                      </DotNetType>
                                      <VariableMode>Instance</VariableMode>
                                      <InstanceMode>Off</InstanceMode>
                                      <UseClone>false</UseClone>
                                      <SerializableInstance>
                                        <Value Type="System.String, mscorlib"><string>Invalid Invalid Invalid</string></Value>
                                      </SerializableInstance>
                                      <AdvancedExpression>false</AdvancedExpression>
                                      <FleeExpression>
                                        <Expression />
                                        <Variables>
                                          <Instances>
                                            <SubTypes />
                                            <ArrayOfVariableInfo />
                                          </Instances>
                                          <ShowAvailableTypes>false</ShowAvailableTypes>
                                          <AddDelegates>false</AddDelegates>
                                          <ExpressionTypes />
                                        </Variables>
                                        <OverrideOwner>false</OverrideOwner>
                                        <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                                        <StaticImports />
                                        <ImportBuiltinTypes>true</ImportBuiltinTypes>
                                        <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                                        <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                                        <DecimalSeparator>46</DecimalSeparator>
                                        <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                                        <ParseCultureMode>Invariant</ParseCultureMode>
                                        <CustomCultureLocale>en-US</CustomCultureLocale>
                                        <RealLiteralDataType>Decimal</RealLiteralDataType>
                                      </FleeExpression>
                                      <AsCompiledExpression>false</AsCompiledExpression>
                                      <MethodName />
                                      <MethodIndex>1</MethodIndex>
                                      <TargetInstance>
                                        <Expression />
                                      </TargetInstance>
                                      <Parameters>
                                        <Instances>
                                          <SubTypes />
                                          <ArrayOfVariableInfo />
                                        </Instances>
                                        <ShowAvailableTypes>false</ShowAvailableTypes>
                                        <AddDelegates>false</AddDelegates>
                                        <ExpressionTypes />
                                      </Parameters>
                                    </VariableInfo>
                                  </ArrayOfVariableInfo>
                                </Instances>
                                <ShowAvailableTypes>false</ShowAvailableTypes>
                                <AddDelegates>false</AddDelegates>
                                <ExpressionTypes>
                                  <DotNetType>
                                    <TypeName>System.String, mscorlib</TypeName>
                                  </DotNetType>
                                  <DotNetType>
                                    <TypeName>System.Boolean, mscorlib</TypeName>
                                  </DotNetType>
                                </ExpressionTypes>
                              </Parameters>
                              <DelegateExpression>
                                <Expression />
                                <Variables>
                                  <Instances>
                                    <SubTypes />
                                    <ArrayOfVariableInfo />
                                  </Instances>
                                  <ShowAvailableTypes>false</ShowAvailableTypes>
                                  <AddDelegates>false</AddDelegates>
                                  <ExpressionTypes />
                                </Variables>
                                <OverrideOwner>false</OverrideOwner>
                                <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                                <StaticImports />
                                <ImportBuiltinTypes>true</ImportBuiltinTypes>
                                <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                                <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                                <DecimalSeparator>46</DecimalSeparator>
                                <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                                <ParseCultureMode>Invariant</ParseCultureMode>
                                <CustomCultureLocale>en-US</CustomCultureLocale>
                                <RealLiteralDataType>Decimal</RealLiteralDataType>
                              </DelegateExpression>
                              <EventHandlerType>DelegateExpression</EventHandlerType>
                              <KeeperAction>
                                <Instances>
                                  <SubTypes />
                                  <ArrayOfActionProviderSettingsOfSimpleEngineEvent />
                                </Instances>
                              </KeeperAction>
                            </ObjectAction>
                          </ActionProviderSettingsOfSimpleEngineEvent>
                        </ArrayOfActionProviderSettingsOfSimpleEngineEvent>
                      </Instances>
                    </KeeperAction>
                    <ActionTree>
                      <Name />
                      <Decription><![CDATA[]]></Decription>
                      <Enabled>true</Enabled>
                      <Mode>ListSubTrees</Mode>
                      <MainList />
                      <SubTrees />
                      <Synonym />
                      <KeyExpression>
                        <Expression />
                        <Variables>
                          <Instances>
                            <SubTypes />
                            <ArrayOfVariableInfo />
                          </Instances>
                          <ShowAvailableTypes>false</ShowAvailableTypes>
                          <AddDelegates>false</AddDelegates>
                          <ExpressionTypes />
                        </Variables>
                        <OverrideOwner>false</OverrideOwner>
                        <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                        <StaticImports />
                        <ImportBuiltinTypes>true</ImportBuiltinTypes>
                        <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                        <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                        <DecimalSeparator>46</DecimalSeparator>
                        <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                        <ParseCultureMode>Invariant</ParseCultureMode>
                        <CustomCultureLocale>en-US</CustomCultureLocale>
                        <RealLiteralDataType>Decimal</RealLiteralDataType>
                      </KeyExpression>
                      <Conditions>
                        <Instances>
                          <SubTypes />
                          <ArrayOfConditionProviderSettingsOfSimpleEngineEvent />
                        </Instances>
                      </Conditions>
                      <Actions>
                        <Instances>
                          <SubTypes />
                          <ArrayOfActionProviderSettingsOfSimpleEngineEvent />
                        </Instances>
                      </Actions>
                    </ActionTree>
                    <ActionTreeExpression>
                      <Expression />
                    </ActionTreeExpression>
                  </ActionProviderSettingsOfSimpleEngineEvent>
                </ArrayOfActionProviderSettingsOfSimpleEngineEvent>
              </Instances>
            </Actions>
            <EnableSimpleLogs>true</EnableSimpleLogs>
            <EnableStopWatch>false</EnableStopWatch>
            <LogDump>true</LogDump>
            <DumpAllVars>false</DumpAllVars>
            <DumpVariables>ReCaptchaChallenge, ReCaptchaResponse, ReCaptchaVerifResult</DumpVariables>
            <ExceptionDumpAllVars>false</ExceptionDumpAllVars>
            <ExceptionDumpVars />
            <ConditionProviders>
              <SubTypes />
              <ArrayOfConditionProviderConfigOfSimpleEngineEvent />
            </ConditionProviders>
            <ActionProviders>
              <SubTypes />
              <ArrayOfActionProviderConfigOfSimpleEngineEvent />
            </ActionProviders>
            <MainControlStep>ControlEvent</MainControlStep>
            <ChildControlId />
            <ControlEventName>UserValidated</ControlEventName>
            <HandlerRegistrationStep>OnInit</HandlerRegistrationStep>
            <BaseHandlerMode>Before</BaseHandlerMode>
            <NotOnFirstLoad>false</NotOnFirstLoad>
            <NotOnPostBacks>false</NotOnPostBacks>
            <EditChildControl>false</EditChildControl>
            <EditEventName>false</EditEventName>
          </DynamicHandlerSettings>
        </ArrayOfDynamicHandlerSettings>
      </DynamicHandlers>
    </ControlAdapterSettings>
    <ControlAdapterSettings>
      <Name>Log Viewer Personalization Example</Name>
      <Decription><![CDATA[This is a simple example on how to hook a dynamic adapter to an existing user control.
Those dynamic handler save user's customization into dedicated profile properties, and retrieves them on subsequent visits.]]></Decription>
      <Enabled>true</Enabled>
      <AdaptedMode>Path</AdaptedMode>
      <AdatedPathMode>SelectPath</AdatedPathMode>
      <AdaptedSelectedPath>~/DesktopModules/Admin/LogViewer/logviewer.ascx</AdaptedSelectedPath>
      <AdaptedControlPath>~/DesktopModules/Admin/LogViewer/logviewer.ascx</AdaptedControlPath>
      <AdaptedControlType>
        <TypeName>DotNetNuke.UI.UserControls.TextEditor, DotNetNuke</TypeName>
      </AdaptedControlType>
      <AdapterMode>DynamicAdapter</AdapterMode>
      <AdapterControlType>
        <TypeName>Aricie.DNN.Entities.LoginInfo, Aricie.DNN</TypeName>
      </AdapterControlType>
      <DynamicHandlers>
        <SubTypes />
        <ArrayOfDynamicHandlerSettings>
          <DynamicHandlerSettings>
            <Name>Load Record Number from Profile</Name>
            <Decription><![CDATA[]]></Decription>
            <Enabled>true</Enabled>
            <Mode>Actions</Mode>
            <Variables>
              <Instances>
                <SubTypes />
                <ArrayOfVariableInfo />
              </Instances>
              <ShowAvailableTypes>false</ShowAvailableTypes>
              <AddDelegates>false</AddDelegates>
              <ExpressionTypes>
                <DotNetType>
                  <TypeName>System.String, mscorlib</TypeName>
                </DotNetType>
                <DotNetType>
                  <TypeName>Aricie.DNN.Entities.LoginInfo, Aricie.DNN</TypeName>
                </DotNetType>
              </ExpressionTypes>
            </Variables>
            <Actions>
              <Instances>
                <SubTypes>
                  <string>Aricie.DNN.Modules.PortalKeeper.ProfileLoadActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</string>
                  <string>Aricie.DNN.Modules.PortalKeeper.ObjectActionsProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</string>
                </SubTypes>
                <ArrayOfActionProviderSettingsOfSimpleEngineEvent>
                  <ActionProviderSettingsOfSimpleEngineEvent xsi:type="ProfileLoadActionProviderOfSimpleEngineEvent">
                    <Name>Load Profile Property into Variable</Name>
                    <Decription><![CDATA[]]></Decription>
                    <Enabled>true</Enabled>
                    <ProviderName>Load Profile Property</ProviderName>
                    <LifeCycleEvent>Run</LifeCycleEvent>
                    <StopOnFailure>false</StopOnFailure>
                    <ExitAction>false</ExitAction>
                    <RethrowException>false</RethrowException>
                    <DontLogExceptions>false</DontLogExceptions>
                    <CaptureException>false</CaptureException>
                    <ExceptionVarName>ActionException</ExceptionVarName>
                    <AddSleepTime>false</AddSleepTime>
                    <SleepTime d="00:00:00" />
                    <UseSemaphore>false</UseSemaphore>
                    <SemaphoreName>Aricie-ActionSemaphore</SemaphoreName>
                    <NbConcurrentThreads>1</NbConcurrentThreads>
                    <SynchronisationTimeout d="00:00:00" />
                    <ConditionalAction>false</ConditionalAction>
                    <CaptureRunDuration>false</CaptureRunDuration>
                    <RunDurationVarName />
                    <DisablePerformanceLogger>false</DisablePerformanceLogger>
                    <UseTaskQueue>false</UseTaskQueue>
                    <EnableCache>false</EnableCache>
                    <CacheKeyFormat>{0}</CacheKeyFormat>
                    <ProcessTokens>false</ProcessTokens>
                    <UseSingleton>false</UseSingleton>
                    <CacheDuration d="00:00:10" />
                    <OutputName>RecordsNb</OutputName>
                    <AddItems>false</AddItems>
                    <Simulation>false</Simulation>
                    <SimulationData><![CDATA[]]></SimulationData>
                    <UserMode>CurrentUser</UserMode>
                    <PortalId>0</PortalId>
                    <UserIdExpression>
                      <Mode>Simple</Mode>
                      <Simple>0</Simple>
                      <Expression>
                        <Expression />
                        <Variables>
                          <Instances>
                            <SubTypes />
                            <ArrayOfVariableInfo />
                          </Instances>
                          <ShowAvailableTypes>false</ShowAvailableTypes>
                          <AddDelegates>false</AddDelegates>
                          <ExpressionTypes />
                        </Variables>
                        <OverrideOwner>false</OverrideOwner>
                        <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                        <StaticImports />
                        <ImportBuiltinTypes>true</ImportBuiltinTypes>
                        <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                        <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                        <DecimalSeparator>46</DecimalSeparator>
                        <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                        <ParseCultureMode>Invariant</ParseCultureMode>
                        <CustomCultureLocale>en-US</CustomCultureLocale>
                        <RealLiteralDataType>Decimal</RealLiteralDataType>
                      </Expression>
                    </UserIdExpression>
                    <UsernameExpression>
                      <Mode>Simple</Mode>
                      <Expression>
                        <Expression />
                        <Variables>
                          <Instances>
                            <SubTypes />
                            <ArrayOfVariableInfo />
                          </Instances>
                          <ShowAvailableTypes>false</ShowAvailableTypes>
                          <AddDelegates>false</AddDelegates>
                          <ExpressionTypes />
                        </Variables>
                        <OverrideOwner>false</OverrideOwner>
                        <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                        <StaticImports />
                        <ImportBuiltinTypes>true</ImportBuiltinTypes>
                        <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                        <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                        <DecimalSeparator>46</DecimalSeparator>
                        <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                        <ParseCultureMode>Invariant</ParseCultureMode>
                        <CustomCultureLocale>en-US</CustomCultureLocale>
                        <RealLiteralDataType>Decimal</RealLiteralDataType>
                      </Expression>
                    </UsernameExpression>
                    <UserInfoExpression>
                      <Expression />
                    </UserInfoExpression>
                    <ProfileType>Personalization</ProfileType>
                    <AsString>false</AsString>
                    <NamingContainer>LogViewer</NamingContainer>
                    <PropertyName>RecordsNb</PropertyName>
                  </ActionProviderSettingsOfSimpleEngineEvent>
                  <ActionProviderSettingsOfSimpleEngineEvent xsi:type="ObjectActionsProviderOfSimpleEngineEvent">
                    <Name>Apply Value To Combobox</Name>
                    <Decription><![CDATA[]]></Decription>
                    <Enabled>true</Enabled>
                    <ProviderName>Object Actions Provider</ProviderName>
                    <LifeCycleEvent>Run</LifeCycleEvent>
                    <StopOnFailure>false</StopOnFailure>
                    <ExitAction>false</ExitAction>
                    <RethrowException>false</RethrowException>
                    <DontLogExceptions>false</DontLogExceptions>
                    <CaptureException>false</CaptureException>
                    <ExceptionVarName>ActionException</ExceptionVarName>
                    <AddSleepTime>false</AddSleepTime>
                    <SleepTime d="00:00:00" />
                    <UseSemaphore>false</UseSemaphore>
                    <SemaphoreName>Aricie-ActionSemaphore</SemaphoreName>
                    <NbConcurrentThreads>1</NbConcurrentThreads>
                    <SynchronisationTimeout d="00:00:00" />
                    <ConditionalAction>false</ConditionalAction>
                    <CaptureRunDuration>false</CaptureRunDuration>
                    <RunDurationVarName />
                    <DisablePerformanceLogger>false</DisablePerformanceLogger>
                    <UseTaskQueue>false</UseTaskQueue>
                    <ObjectActions>
                      <Instances>
                        <SubTypes>
                          <string>Aricie.DNN.Services.Flee.SetObjectProperty`1[[DotNetNuke.Web.UI.WebControls.DnnComboBox, DotNetNuke.Web]], Aricie.DNN</string>
                        </SubTypes>
                        <ArrayOfObjectAction>
                          <ObjectAction xsi:type="SetObjectPropertyOfDnnComboBox">
                            <Enabled>true</Enabled>
                            <LockTarget>true</LockTarget>
                            <Instance>
                              <Expression>sender</Expression>
                            </Instance>
                            <Parameters>
                              <Instances>
                                <SubTypes />
                                <ArrayOfVariableInfo />
                              </Instances>
                              <ShowAvailableTypes>false</ShowAvailableTypes>
                              <AddDelegates>false</AddDelegates>
                              <ExpressionTypes>
                                <DotNetType>
                                  <TypeName>System.String, mscorlib</TypeName>
                                </DotNetType>
                                <DotNetType>
                                  <TypeName>Aricie.DNN.Entities.LoginInfo, Aricie.DNN</TypeName>
                                </DotNetType>
                              </ExpressionTypes>
                            </Parameters>
                            <PropertyName>SelectedValue</PropertyName>
                            <Value>
                              <Expression>RecordsNb</Expression>
                              <Variables>
                                <Instances>
                                  <SubTypes />
                                  <ArrayOfVariableInfo />
                                </Instances>
                                <ShowAvailableTypes>false</ShowAvailableTypes>
                                <AddDelegates>false</AddDelegates>
                                <ExpressionTypes />
                              </Variables>
                              <OverrideOwner>false</OverrideOwner>
                              <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                              <StaticImports />
                              <ImportBuiltinTypes>true</ImportBuiltinTypes>
                              <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                              <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                              <DecimalSeparator>46</DecimalSeparator>
                              <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                              <ParseCultureMode>Invariant</ParseCultureMode>
                              <CustomCultureLocale>en-US</CustomCultureLocale>
                              <RealLiteralDataType>Decimal</RealLiteralDataType>
                            </Value>
                          </ObjectAction>
                        </ArrayOfObjectAction>
                      </Instances>
                      <ShowAvailableTypes>false</ShowAvailableTypes>
                      <ExpressionTypes>
                        <DotNetType>
                          <TypeName>System.String, mscorlib</TypeName>
                        </DotNetType>
                        <DotNetType>
                          <TypeName>Aricie.DNN.Entities.LoginInfo, Aricie.DNN</TypeName>
                        </DotNetType>
                        <DotNetType>
                          <TypeName>System.Web.UI.Control, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</TypeName>
                        </DotNetType>
                        <DotNetType>
                          <TypeName>DotNetNuke.Web.UI.WebControls.DnnComboBox, DotNetNuke.Web</TypeName>
                        </DotNetType>
                      </ExpressionTypes>
                    </ObjectActions>
                  </ActionProviderSettingsOfSimpleEngineEvent>
                </ArrayOfActionProviderSettingsOfSimpleEngineEvent>
              </Instances>
            </Actions>
            <EnableSimpleLogs>false</EnableSimpleLogs>
            <EnableStopWatch>false</EnableStopWatch>
            <LogDump>false</LogDump>
            <DumpAllVars>false</DumpAllVars>
            <DumpVariables />
            <ExceptionDumpAllVars>false</ExceptionDumpAllVars>
            <ExceptionDumpVars />
            <ConditionProviders>
              <SubTypes />
              <ArrayOfConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>Client Source Condition</Name>
                  <Decription><![CDATA[Matches according to client identifying source parameters (Session, IP Address, country etc.)]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ClientSourceCondition`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>DotNetNuke Page Condition</Name>
                  <Decription><![CDATA[Matches according to the target DNN Page as defined in the url]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.DnnPageCondition`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>Dynamic Expression Condition</Name>
                  <Decription><![CDATA[Matches according to the evaluation of a dynamic code expression defined in the Flee language]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.FleeExpressionCondition`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>Membership Condition</Name>
                  <Decription><![CDATA[Matches according to the user membership]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.MembershipCondition`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>Portal Alias Condition</Name>
                  <Decription><![CDATA[Matches according to the portal alias used in the url]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.PortalAliasCondition`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>Static Condition</Name>
                  <Decription><![CDATA[Simply matches according to the static value configured]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.StaticConditionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>Sub Conditions Provider</Name>
                  <Decription><![CDATA[Allows to build a condition tree with sub conditions]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.SubConditionsProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
              </ArrayOfConditionProviderConfigOfSimpleEngineEvent>
            </ConditionProviders>
            <ActionProviders>
              <SubTypes />
              <ArrayOfActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Log Event Action</Name>
                  <Decription><![CDATA[Inserts a new log in the DotNetNuke event log. Automatic email alert can be configured accordingly]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.LogEventAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Define Variables Action Provider</Name>
                  <Decription><![CDATA[This provider allows to declare and instanciate a set of variables, which will be stored in the context "Item" dictionary]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.DefineVarsActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Deserialize Action Provider</Name>
                  <Decription><![CDATA[This provider allows to deserialize a given string, result of dynamic expression, into a typed object]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.DeserializeActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Display Message Action</Name>
                  <Decription><![CDATA[Displays a DNN message with token replace on the current page. A target module can be optionnally chosen.]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.DisplayMessageAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Execute Sql Action</Name>
                  <Decription><![CDATA[Execute a call to a stored procedure, a Sql script or sql query and returns the result]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ExecuteSqlAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Expression Action Provider</Name>
                  <Decription><![CDATA[This provider runs by evaluating a boolean expression and returning the result. The current PortalKeeperContext can be used as a dedicated variable]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ExpressionActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>File Manager Action</Name>
                  <Decription><![CDATA[This provider allows to browse or delete files and folders, given a parent path by dynamic expressions]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.FileManagerActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>File Read Action</Name>
                  <Decription><![CDATA[This provider allows to read a file to a given String variable, given its path by dynamic expressions]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.FileReadActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>File Write Action</Name>
                  <Decription><![CDATA[This provider allows to write a content to a file, given its path and the content to write by dynamic expressions]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.FileWriteActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Loop</Name>
                  <Decription><![CDATA[This provider allows to loop running a sub bot over a custom collection. On each run, the current item of the collection is affected to a custom variable.]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.LoopActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Multiple Action Provider</Name>
                  <Decription><![CDATA[Runs sub sequences of Actions]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.MultipleActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Object Actions Provider</Name>
                  <Decription><![CDATA[This provider allows to call object methods or set object properties]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ObjectActionsProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Load Profile Property</Name>
                  <Decription><![CDATA[This provider allows to load an indentity or personnalization profile property for a given user.]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ProfileLoadActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Save Profile Property</Name>
                  <Decription><![CDATA[This provider allows to save an identity or personnalization profile property for a given user.]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ProfileSaveActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Redirect Action</Name>
                  <Decription><![CDATA[Redirect the current client to a specified url]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.RedirectAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Run Program Action</Name>
                  <Decription><![CDATA[Run an executable program given its path and parameters]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.RunProgramAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Send Email Action</Name>
                  <Decription><![CDATA[Sends an email to a list of destination addresses. Token replace is available for all text fields and target address list.]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.SendEmailAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Serialize Action Provider</Name>
                  <Decription><![CDATA[This provider allows to serialize a given entity, result of dynamic expression, into a string]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.SerializeActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>String Filter Provider</Name>
                  <Decription><![CDATA[This provider allows to you to manipulate a string, by either running a series of transformations or performing xpath selects]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.StringFilterProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Sub Bot Action Provider</Name>
                  <Decription><![CDATA[This provider allows to run a sub-bot as a dedicated action. Because of the sequential nature of the engine, the subbot triggers each previous step up to the current step, the rules and action should be configured accordingly]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.SubBotActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Web Action</Name>
                  <Decription><![CDATA[Performs a web call to a web address]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.WebAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>While Action Provider</Name>
                  <Decription><![CDATA[This provider allows to loop running a sub bot while a boolean condition evaluates to true.]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.WhileActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Return Rest Operation Action</Name>
                  <Decription><![CDATA[Ends a rest web service dynamic method with a status and an optional result resource]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ReturnRestOperationAction, Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
              </ArrayOfActionProviderConfigOfSimpleEngineEvent>
            </ActionProviders>
            <MainControlStep>ChildControlEvent</MainControlStep>
            <ChildControlId>ddlRecordsPerPage</ChildControlId>
            <ControlEventName>Load</ControlEventName>
            <HandlerRegistrationStep>OnInit</HandlerRegistrationStep>
            <BaseHandlerMode>Before</BaseHandlerMode>
            <NotOnFirstLoad>false</NotOnFirstLoad>
            <NotOnPostBacks>true</NotOnPostBacks>
          </DynamicHandlerSettings>
          <DynamicHandlerSettings>
            <Name>Save records number in Profile</Name>
            <Decription><![CDATA[]]></Decription>
            <Enabled>true</Enabled>
            <Mode>Actions</Mode>
            <Variables>
              <Instances>
                <SubTypes />
                <ArrayOfVariableInfo />
              </Instances>
              <ShowAvailableTypes>false</ShowAvailableTypes>
              <AddDelegates>false</AddDelegates>
              <ExpressionTypes>
                <DotNetType>
                  <TypeName>System.String, mscorlib</TypeName>
                </DotNetType>
                <DotNetType>
                  <TypeName>Aricie.DNN.Entities.LoginInfo, Aricie.DNN</TypeName>
                </DotNetType>
              </ExpressionTypes>
            </Variables>
            <Actions>
              <Instances>
                <SubTypes>
                  <string>Aricie.DNN.Modules.PortalKeeper.ProfileSaveActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</string>
                </SubTypes>
                <ArrayOfActionProviderSettingsOfSimpleEngineEvent>
                  <ActionProviderSettingsOfSimpleEngineEvent xsi:type="ProfileSaveActionProviderOfSimpleEngineEvent">
                    <Name>Set RecordsNb personalization property</Name>
                    <Decription><![CDATA[]]></Decription>
                    <Enabled>true</Enabled>
                    <ProviderName>Save Profile Property</ProviderName>
                    <LifeCycleEvent>Run</LifeCycleEvent>
                    <StopOnFailure>false</StopOnFailure>
                    <ExitAction>false</ExitAction>
                    <RethrowException>false</RethrowException>
                    <DontLogExceptions>false</DontLogExceptions>
                    <CaptureException>false</CaptureException>
                    <ExceptionVarName>ActionException</ExceptionVarName>
                    <AddSleepTime>false</AddSleepTime>
                    <SleepTime d="00:00:00" />
                    <UseSemaphore>false</UseSemaphore>
                    <SemaphoreName>Aricie-ActionSemaphore</SemaphoreName>
                    <NbConcurrentThreads>1</NbConcurrentThreads>
                    <SynchronisationTimeout d="00:00:00" />
                    <ConditionalAction>false</ConditionalAction>
                    <CaptureRunDuration>false</CaptureRunDuration>
                    <RunDurationVarName />
                    <DisablePerformanceLogger>false</DisablePerformanceLogger>
                    <UseTaskQueue>false</UseTaskQueue>
                    <EnableCache>false</EnableCache>
                    <CacheKeyFormat>{0}</CacheKeyFormat>
                    <ProcessTokens>false</ProcessTokens>
                    <UseSingleton>false</UseSingleton>
                    <CacheDuration d="00:00:10" />
                    <OutputName />
                    <AddItems>false</AddItems>
                    <Simulation>false</Simulation>
                    <SimulationData><![CDATA[]]></SimulationData>
                    <UserMode>CurrentUser</UserMode>
                    <PortalId>0</PortalId>
                    <UserIdExpression>
                      <Mode>Simple</Mode>
                      <Simple>0</Simple>
                      <Expression>
                        <Expression />
                        <Variables>
                          <Instances>
                            <SubTypes />
                            <ArrayOfVariableInfo />
                          </Instances>
                          <ShowAvailableTypes>false</ShowAvailableTypes>
                          <AddDelegates>false</AddDelegates>
                          <ExpressionTypes />
                        </Variables>
                        <OverrideOwner>false</OverrideOwner>
                        <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                        <StaticImports />
                        <ImportBuiltinTypes>true</ImportBuiltinTypes>
                        <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                        <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                        <DecimalSeparator>46</DecimalSeparator>
                        <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                        <ParseCultureMode>Invariant</ParseCultureMode>
                        <CustomCultureLocale>en-US</CustomCultureLocale>
                        <RealLiteralDataType>Decimal</RealLiteralDataType>
                      </Expression>
                    </UserIdExpression>
                    <UsernameExpression>
                      <Mode>Simple</Mode>
                      <Expression>
                        <Expression />
                        <Variables>
                          <Instances>
                            <SubTypes />
                            <ArrayOfVariableInfo />
                          </Instances>
                          <ShowAvailableTypes>false</ShowAvailableTypes>
                          <AddDelegates>false</AddDelegates>
                          <ExpressionTypes />
                        </Variables>
                        <OverrideOwner>false</OverrideOwner>
                        <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                        <StaticImports />
                        <ImportBuiltinTypes>true</ImportBuiltinTypes>
                        <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                        <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                        <DecimalSeparator>46</DecimalSeparator>
                        <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                        <ParseCultureMode>Invariant</ParseCultureMode>
                        <CustomCultureLocale>en-US</CustomCultureLocale>
                        <RealLiteralDataType>Decimal</RealLiteralDataType>
                      </Expression>
                    </UsernameExpression>
                    <UserInfoExpression>
                      <Expression />
                    </UserInfoExpression>
                    <ProfileType>Personalization</ProfileType>
                    <AsString>false</AsString>
                    <NamingContainer>LogViewer</NamingContainer>
                    <PropertyName>RecordsNb</PropertyName>
                    <Value>
                      <Expression>Eargs.Value</Expression>
                      <Variables>
                        <Instances>
                          <SubTypes />
                          <ArrayOfVariableInfo />
                        </Instances>
                        <ShowAvailableTypes>false</ShowAvailableTypes>
                        <AddDelegates>false</AddDelegates>
                        <ExpressionTypes />
                      </Variables>
                      <OverrideOwner>false</OverrideOwner>
                      <OwnerMemberAccess>IgnoreCase Instance Static Public</OwnerMemberAccess>
                      <StaticImports />
                      <ImportBuiltinTypes>true</ImportBuiltinTypes>
                      <DateTimeFormat>dd/MM/yyyy</DateTimeFormat>
                      <RequireDigitsBeforeDecimalPoint>false</RequireDigitsBeforeDecimalPoint>
                      <DecimalSeparator>46</DecimalSeparator>
                      <FunctionArgumentSeparator>44</FunctionArgumentSeparator>
                      <ParseCultureMode>Invariant</ParseCultureMode>
                      <CustomCultureLocale>en-US</CustomCultureLocale>
                      <RealLiteralDataType>Decimal</RealLiteralDataType>
                    </Value>
                  </ActionProviderSettingsOfSimpleEngineEvent>
                </ArrayOfActionProviderSettingsOfSimpleEngineEvent>
              </Instances>
            </Actions>
            <EnableSimpleLogs>false</EnableSimpleLogs>
            <EnableStopWatch>false</EnableStopWatch>
            <LogDump>false</LogDump>
            <DumpAllVars>false</DumpAllVars>
            <DumpVariables />
            <ExceptionDumpAllVars>false</ExceptionDumpAllVars>
            <ExceptionDumpVars />
            <ConditionProviders>
              <SubTypes />
              <ArrayOfConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>Client Source Condition</Name>
                  <Decription><![CDATA[Matches according to client identifying source parameters (Session, IP Address, country etc.)]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ClientSourceCondition`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>DotNetNuke Page Condition</Name>
                  <Decription><![CDATA[Matches according to the target DNN Page as defined in the url]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.DnnPageCondition`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>Dynamic Expression Condition</Name>
                  <Decription><![CDATA[Matches according to the evaluation of a dynamic code expression defined in the Flee language]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.FleeExpressionCondition`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>Membership Condition</Name>
                  <Decription><![CDATA[Matches according to the user membership]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.MembershipCondition`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>Portal Alias Condition</Name>
                  <Decription><![CDATA[Matches according to the portal alias used in the url]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.PortalAliasCondition`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>Static Condition</Name>
                  <Decription><![CDATA[Simply matches according to the static value configured]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.StaticConditionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
                <ConditionProviderConfigOfSimpleEngineEvent>
                  <Name>Sub Conditions Provider</Name>
                  <Decription><![CDATA[Allows to build a condition tree with sub conditions]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.SubConditionsProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ConditionProviderConfigOfSimpleEngineEvent>
              </ArrayOfConditionProviderConfigOfSimpleEngineEvent>
            </ConditionProviders>
            <ActionProviders>
              <SubTypes />
              <ArrayOfActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Log Event Action</Name>
                  <Decription><![CDATA[Inserts a new log in the DotNetNuke event log. Automatic email alert can be configured accordingly]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.LogEventAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Define Variables Action Provider</Name>
                  <Decription><![CDATA[This provider allows to declare and instanciate a set of variables, which will be stored in the context "Item" dictionary]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.DefineVarsActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Deserialize Action Provider</Name>
                  <Decription><![CDATA[This provider allows to deserialize a given string, result of dynamic expression, into a typed object]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.DeserializeActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Display Message Action</Name>
                  <Decription><![CDATA[Displays a DNN message with token replace on the current page. A target module can be optionnally chosen.]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.DisplayMessageAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Execute Sql Action</Name>
                  <Decription><![CDATA[Execute a call to a stored procedure, a Sql script or sql query and returns the result]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ExecuteSqlAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Expression Action Provider</Name>
                  <Decription><![CDATA[This provider runs by evaluating a boolean expression and returning the result. The current PortalKeeperContext can be used as a dedicated variable]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ExpressionActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>File Manager Action</Name>
                  <Decription><![CDATA[This provider allows to browse or delete files and folders, given a parent path by dynamic expressions]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.FileManagerActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>File Read Action</Name>
                  <Decription><![CDATA[This provider allows to read a file to a given String variable, given its path by dynamic expressions]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.FileReadActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>File Write Action</Name>
                  <Decription><![CDATA[This provider allows to write a content to a file, given its path and the content to write by dynamic expressions]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.FileWriteActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Loop</Name>
                  <Decription><![CDATA[This provider allows to loop running a sub bot over a custom collection. On each run, the current item of the collection is affected to a custom variable.]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.LoopActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Multiple Action Provider</Name>
                  <Decription><![CDATA[Runs sub sequences of Actions]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.MultipleActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Object Actions Provider</Name>
                  <Decription><![CDATA[This provider allows to call object methods or set object properties]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ObjectActionsProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Load Profile Property</Name>
                  <Decription><![CDATA[This provider allows to load an indentity or personnalization profile property for a given user.]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ProfileLoadActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Save Profile Property</Name>
                  <Decription><![CDATA[This provider allows to save an identity or personnalization profile property for a given user.]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ProfileSaveActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Redirect Action</Name>
                  <Decription><![CDATA[Redirect the current client to a specified url]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.RedirectAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Run Program Action</Name>
                  <Decription><![CDATA[Run an executable program given its path and parameters]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.RunProgramAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Send Email Action</Name>
                  <Decription><![CDATA[Sends an email to a list of destination addresses. Token replace is available for all text fields and target address list.]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.SendEmailAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Serialize Action Provider</Name>
                  <Decription><![CDATA[This provider allows to serialize a given entity, result of dynamic expression, into a string]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.SerializeActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>String Filter Provider</Name>
                  <Decription><![CDATA[This provider allows to you to manipulate a string, by either running a series of transformations or performing xpath selects]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.StringFilterProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Sub Bot Action Provider</Name>
                  <Decription><![CDATA[This provider allows to run a sub-bot as a dedicated action. Because of the sequential nature of the engine, the subbot triggers each previous step up to the current step, the rules and action should be configured accordingly]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.SubBotActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Web Action</Name>
                  <Decription><![CDATA[Performs a web call to a web address]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.WebAction`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>While Action Provider</Name>
                  <Decription><![CDATA[This provider allows to loop running a sub bot while a boolean condition evaluates to true.]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.WhileActionProvider`1[[Aricie.DNN.Modules.PortalKeeper.SimpleEngineEvent, Aricie.PortalKeeper]], Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
                <ActionProviderConfigOfSimpleEngineEvent>
                  <Name>Return Rest Operation Action</Name>
                  <Decription><![CDATA[Ends a rest web service dynamic method with a status and an optional result resource]]></Decription>
                  <Enabled>true</Enabled>
                  <TypeName>Aricie.DNN.Modules.PortalKeeper.ReturnRestOperationAction, Aricie.PortalKeeper</TypeName>
                  <MinTEngineEvents>Run</MinTEngineEvents>
                  <MaxTEngineEvents>Run</MaxTEngineEvents>
                  <DefaultTEngineEvents>Run</DefaultTEngineEvents>
                </ActionProviderConfigOfSimpleEngineEvent>
              </ArrayOfActionProviderConfigOfSimpleEngineEvent>
            </ActionProviders>
            <MainControlStep>ChildControlEvent</MainControlStep>
            <ChildControlId>ddlRecordsPerPage</ChildControlId>
            <ControlEventName>SelectedIndexChanged</ControlEventName>
            <HandlerRegistrationStep>OnInit</HandlerRegistrationStep>
            <BaseHandlerMode>Before</BaseHandlerMode>
            <NotOnFirstLoad>false</NotOnFirstLoad>
            <NotOnPostBacks>false</NotOnPostBacks>
          </DynamicHandlerSettings>
        </ArrayOfDynamicHandlerSettings>
      </DynamicHandlers>
    </ControlAdapterSettings>
  </ArrayOfControlAdapterSettings>
</SerializableListOfControlAdapterSettings>